Page({
  data: {
    adminInfo: null,
    loading: true,
    menuItems: [
      {
        id: 'equipment',
        name: '装备管理',
        icon: '/assets/icons/equipment.png',
        url: '/pages/admin/equipment/list/list'
      },
      {
        id: 'orders',
        name: '订单管理',
        icon: '/assets/icons/order.png',
        url: '/pages/admin/orders/list/list'
      },
      {
        id: 'users',
        name: '用户管理',
        icon: '/assets/icons/profile.png',
        url: '/pages/admin/users/list/list'
      }
    ],
    showDebugButton: true
  },
  
  onLoad() {
    this.checkAdminLogin();
  },
  
  onShow() {
    // 每次页面显示时检查登录状态
    this.checkAdminLogin();
  },
  
  // 检查管理员登录状态
  async checkAdminLogin() {
    const adminInfo = wx.getStorageSync('adminInfo');
    const adminToken = wx.getStorageSync('adminToken');
    
    if (!adminInfo || !adminToken) {
      this.redirectToLogin();
      return;
    }
    
    this.setData({ loading: true });
    
    try {
      // 检查管理员身份是否有效
      const result = await wx.cloud.callFunction({
        name: 'checkAdminAuth',
        data: {
          adminId: adminInfo.adminId,
          token: adminToken
        },
        config: {
          env: 'cloud1-2ga6780q302b7f4a'
        }
      });
      
      const { code, data, message } = result.result;
      
      if (code === 0 && data) {
        // 验证通过，更新管理员信息
        this.setData({
          adminInfo: {
            ...adminInfo,
            ...data
          }
        });
      } else {
        // 验证失败，清除存储的信息并重定向到登录页
        wx.removeStorageSync('adminInfo');
        wx.removeStorageSync('adminToken');
        
        wx.showToast({
          title: message || '登录已过期，请重新登录',
          icon: 'none'
        });
        
        this.redirectToLogin();
      }
    } catch (error) {
      console.error('验证管理员身份错误', error);
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    } finally {
      this.setData({ loading: false });
    }
  },
  
  // 重定向到登录页
  redirectToLogin() {
    wx.redirectTo({
      url: '/pages/admin/login/login',
    });
  },
  
  // 跳转到功能页面
  navigateToPage(e) {
    const { url } = e.currentTarget.dataset;
    wx.navigateTo({
      url: url
    });
  },
  
  // 退出登录
  logout() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除存储的管理员信息
          wx.removeStorageSync('adminInfo');
          wx.removeStorageSync('adminToken');
          
          // 跳转到登录页
          this.redirectToLogin();
        }
      }
    });
  },
  
  // 初始化数据库（修复集合不存在的问题）
  initDatabase() {
    wx.showLoading({
      title: '正在初始化...',
      mask: true
    });
    
    // 获取云数据库实例
    const db = wx.cloud.database({
      env: 'cloud1-2ga6780q302b7f4a'
    });
    
    // 要创建的集合列表
    const collections = ['equipment', 'orders', 'users', 'admins'];
    let results = {};
    let successCount = 0;
    
    // 逐个检查并创建集合
    collections.forEach((collectionName) => {
      db.createCollection(collectionName).then(() => {
        console.log(`成功创建集合: ${collectionName}`);
        results[collectionName] = '成功创建';
        successCount++;
        
        // 如果所有集合都已处理完成
        if (successCount >= collections.length) {
          finishInitialization();
        }
      }).catch(error => {
        console.error(`创建集合 ${collectionName} 失败:`, error);
        
        // 如果错误是由于集合已存在，则视为成功
        if (error.errCode === -7004) {
          console.log(`集合 ${collectionName} 已存在`);
          results[collectionName] = '已存在';
          successCount++;
        } else {
          results[collectionName] = `错误: ${error.errMsg || '未知错误'}`;
          successCount++;
        }
        
        // 如果所有集合都已处理完成
        if (successCount >= collections.length) {
          finishInitialization();
        }
      });
    });
    
    // 完成初始化
    const finishInitialization = () => {
      wx.hideLoading();
      
      console.log('初始化数据库结果:', results);
      
      wx.showModal({
        title: '初始化完成',
        content: '数据库初始化已完成，现在可以正常使用系统功能',
        showCancel: false
      });
    };
  }
}) 